A software development process typically progresses through a series of phases, e.g., requirements, design, implementation, verification, and maintenance phases. Since the remaining phases are built upon the results of the requirements phase, errors (e.g., omissions) in the requirements can be very costly. On the other hand, generation of a complete set of requirements can be challenging: 1) because of the complexity of the software being developed, and 2) due to the interdisciplinary nature of the communications (e.g., among software engineers, application domain experts, customers, users, etc.) used to define the requirements.